package com.jlpay.open.jlpay.sdk.java.model.trans.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 *
 * @author dengwenning
 * @since 2024/9/13
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class CouponInfoDto {

    /**
     * 券ID
     */
    private String promotionId;
    /**
     * 优惠名称
     */
    private String name;
    /**
     * 优惠范围
     */
    private String scope;
    /**
     * 优惠类型
     * 微信：COUPON：代金券，需要走结算资金的充值型代金券，（境外商户券币种与支付币种一致）DISCOUNT：优惠券，不走结算资金的免充值型优惠券，（境外商户券币种与标价币种一致）
     * 支付宝：ALIPAY_FIX_VOUCHER - 全场代金券; ALIPAY_DISCOUNT_VOUCH ER -折扣券; ALIPAY_ITEM_VOUCHER - 单品优惠; 注：不排除将来新增其他类型的可能，商家接入时注意兼容性避免硬编码
     * 银联：DD01：随机立减; CP01：抵金券1：无需领取，交易时直接适配并承兑的优惠券; CP02：抵金券2：事前领取，交易时上送银联并承兑的优惠券未来将根据业务发展增加新的类型。
     */
    private String type;
    /**
     * 优惠券面额
     */
    private String amount;
    /**
     * 活动ID
     */
    private String activityId;
    /**
     * 微信出资
     */
    private String wxpayContribute;
    /**
     * 商户出资
     */
    private String merchantContribute;

    /**
     * 支付宝券ID
     */
    private String id;
    /**
     * 其他出资金额
     */
    private String otherContribute;
    /**
     * 备注信息
     */
    private String memo;
    /**
     * 券模板ID
     */
    private String templateId;
    /**
     * 优惠券的其他出资方明细
     */
    private String otherContributeDetail;
    /**
     * 买家出资
     */
    private String purchaseBuyerContribute;
    /**
     * 商户出资;
     */
    private String purchaseMerchantContribute;
    /**
     * 内部出资
     */
    private String purchaseAntContribute;

    /**
     * 出资方
     */
    @JsonProperty("spnsrId")
    private String spnsrId;
    /**
     * 优惠金额
     */
    @JsonProperty("offstAmt")
    private Integer offstAmt;
    /**
     * 项目简称
     */
    private String desc;
    /**
     * 附加信息
     */
    @JsonProperty("addnInfo")
    private String addnInfo;
    /**
     * 项目发行方
     */
    @JsonProperty("issuerId")
    private String issuerId;

}
